package developer.算法.动态规划.爬楼梯;

/**
 * @author zhangyongkang
 * @time 2024/6/13 16:13
 * @description
 *
 */
public class Solution_other {

    /**
     *
     作者：力扣官方题解
     链接：<a href="https://leetcode.cn/problems/climbing-stairs/solutions/286022/pa-lou-ti-by-leetcode-solution/">官方题解</a>
     来源：力扣（LeetCode）
     著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
     * @param n
     * @return
     * desc：对于递归的一种简化
     * 去掉一维数组  只需要关注前两个数字即可 所以只需要两个变量冗余即可
     */
        public int climbStairs(int n) {
            int p = 0, q = 0, r = 1;
            for (int i = 1; i <= n; ++i) {
                p = q;
                q = r;
                r = p + q;
            }
            return r;
        }
//
//    class MinCha {
//        HashMap<Integer, Integer> hm = new HashMap<>();
//
//        public int climbStairs(int n) {
//            if (n <= 1) {
//                hm.put(1, 1);
//                return 1;
//            }
//
//            if (!hm.containsKey(n)) {
//                hm.put(n, climbStairs(n - 1) + climbStairs(n - 2));
//            }
//            return hm.get(n);
//        }
//    }

}
